import {observer} from "./observer/index.js";

export function initState(vm) {
    let opts = vm.$options
    console.log(opts)

    // 判断
    if (opts.props) {
        initProps()
    }

    if (opts.data) {
        initData(vm)
    }

    if (opts.watch) {
        initWatch()
    }

    if (opts.computed) {
        initComputed()
    }

    if (opts.methods) {
        initMethods()
    }
}

function initProps() {
}

function initWatch() {
}

function initComputed() {
}

function initMethods() {
}

function initData(vm) {

    let data = vm.$options.data

    // 判断data是对象还是函数
    data = vm._data = typeof data === "function" ? data.call(vm) : data  // 注意这里的this指向

    // 对数据进行劫持
    observer(data)
}
